1. Field of the Invention
The present invention relates to Virtual Machine technology, and, more particularly, to memory management for Virtual Machines.
2. Background Art
With Virtual Machine (VM) technology, a user can create and run multiple operating environments on a server at the same time. Each operating environment, or Virtual Machine, requires its own operating system (OS) and can run applications independently. The VM software provides a layer between the computing, storage, and networking hardware and the software that runs on it.
Virtual Machine technology can lower information technology (IT) cost through increased efficiency, flexibility, and responsiveness. Each VM acts as a separate environment, which reduces risk and allows developers to quickly re-create different operating system (OS) configurations or compare versions of applications designed for different OS's. Additional customer uses for VMs include targeted production server consolidation, hosting of legacy applications (older versions), and computer or server backup.
A Virtual Machine technology is therefore one technique for emulating or otherwise virtualizing the behavior of software and/or hardware. Generally, a Virtual Machine is an environment that is launched on a particular processor that is running an operating system. Normally, the operating system installed on such a machine or processor has certain privileges that are not available to user applications. For example, many input/output commands may be privileged, and executable only in the operating system (or privileged) mode. Certain areas of memory, or certain addresses in memory, also may require operating system privilege to be accessed.
For each VM, a separate process is created, and the host operating system (HOS) is responsible for scheduling of both the VMs and other processes in the HOS. Examples of such hosted VMMs include VMware GSX Server, VMware Workstation, MS Virtual PC, MS Virtual Server and SVISTA 2004.
Many of the applications where Virtual Machines are used can be separated into desktop applications and server applications. The implications for the Virtual Machines, and the resource management of such Virtual Machines, are therefore different. For example, one of the limitations of Microsoft Windows (the 32-bit version) today is that a process is allocated a finite amount of virtual memory by the HOS, usually less than 2 GB (because 2 GB is default limit for the user space in Windows). For many desktop applications, where Virtual Machines are used to run legacy software applications, or where only one or two Virtual Machines are launched, this is frequently sufficient.
On the other hand, server-based applications often require more memory. For example, with each Virtual Machine supporting its own virtual server, it is desirable to “give” to that Virtual Machine a larger address space and a larger amount of process virtual memory—for example, 100 GB. Few desktop processes require this much memory (at least today, in 2006), whereas it is not unusual to have server applications that can benefit from a larger address space and a larger memory allocation. Memory sharing (but not disk data sharing) is also described in U.S. Pat. No. 6,789,156.
Accordingly, there is a need in the art to be able to allocate more memory to a Virtual Machine than the operating system nominally supports.